use chrono::{DateTime,Utc};
use serde_json::Value;
declare_dao!(ClubDao {
    id:i64,
    club_struct_id:Option<i64>,
    club_page_id:Option<i64>,
    name:String,
    favicon:Option<i64>,
    description:Option<String>,
    location:Option<String>,
    address:Option<String>,
    created_at:DateTime<Utc>,
    updated_at:DateTime<Utc>
};"clubs";i64;id);

declare_dao!(ClubPageDao {
    id:i64,
    title:String,
    content:Value,
    content_text:Option<String>,
    parent_id:Option<i64>,
    created_at:DateTime<Utc>,
    updated_at:DateTime<Utc>
};"club_pages";i64;id);

declare_dao!(ClubStructDao {
    id:i64,
    name:String,
    description:Option<String>,
    favicon:Option<i64>,
    cover_image:Option<i64>,
    created_at:DateTime<Utc>,
    updated_at:DateTime<Utc>
};"club_struct";i64;id);

declare_dao!(ClubPositionDao {
    id:i64,
    name:String,
    description:Option<String>,
    favicon:Option<i64>,
    cover_image:Option<i64>,
    created_at:DateTime<Utc>,
    updated_at:DateTime<Utc>
};"club_position";i64;id);

declare_dao!(ClubApplicationFlowDao {
    id:i64,
    parent_id:Option<i64>,
    club_id:Option<i64>,
    name:String,
    favicon:Option<i64>,
    description:Option<String>,
    color:Option<String>,
    continue_time:Option<i32>,
    created_at:DateTime<Utc>,
    updated_at:DateTime<Utc>
};"club_application_flow";i64;id);

declare_dao!(ClubDepartmentDao {
    id:i64,
    name:String,
    description:Option<String>,
    favicon:Option<i64>,
    cover_image:Option<i64>,
    created_at:DateTime<Utc>,
    updated_at:DateTime<Utc>
};"club_departments";i64;id);

declare_dao!(ClubApplicationFormDao {
    id:i64,
    club_id:Option<i64>,
    favicon:Option<i64>,
    cover_image:Option<i64>,
    parent_id:Option<i64>,
    enable:bool,
    requried:bool,
    description:Option<String>,
    form_schema:Value,
    created_at:DateTime<Utc>,
    updated_at:DateTime<Utc>
};"club_application_form";i64;id);
